// client.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
 
#include <iostream>
#include <vector>
#include <boost/asio.hpp>
 
using namespace boost::asio;
using boost::system::error_code;
using namespace std;
 
int main()
{
	io_service service;
	ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 2001);
	ip::tcp::socket sock(service);
	char buf[100] = { 0 };
	
	//异步连接注意buf和sock的有效性，这里选择引用,保证异步处理时变量是有效的
	sock.async_connect(ep, [&sock,&buf](const boost::system::error_code & ec) {
		if(ec)
		{
			std::cout << "连接失败，错误码: " << ec << std::endl;
		}
		else
		{
			cout << "Receive from " << sock.remote_endpoint().address() << ": " << endl;
			//异步读取
			sock.async_read_some(buffer(buf), [&buf](const boost::system::error_code & ec, std::size_t bytes) {
				if (ec)
				{
					std::cout << "读取失败，错误码: " << ec << std::endl;
				} 
				else
				{
					std::cout << "读取成功: " << bytes << std::endl;
					printf(buf);
				}
			});
		}
	});
 
	service.run();
 
	return 0;
}